1. Field of the Invention
This invention is related to coherent memory systems, including coherent distributed memory systems such as cache-coherent nonuniform memory access (CC-NUMA) memory systems.
2. Description of the Related Art
Memory systems (including main memory and any caches in the system) are often designed to be coherent. That is, even though multiple copies of data from a given memory location may exist in the memory system, a read of that memory location returns the most recent data written to that memory location. Typically, a coherent system may include one or more coherent agents and a memory controller coupled via an interconnect of some kind.
One mechanism for scaling coherent systems to larger numbers of coherent agents is using a distributed memory system. In such a system, memory is distributed among various nodes (which may also include coherent agents), and the nodes are interconnected. A coherent agent in one node may access memory in another node. One class of techniques for maintaining coherency in a distributed memory system is referred to as cache-coherent, nonuniform memory access (CC-NUMA). In a CC-NUMA system, access to memory may have a varying latency (e.g. memory in the same node as an agent may be accessed more rapidly than memory in another node, and accesses to different nodes may have varying latencies as well), but coherency is maintained.
Many CC-NUMA systems implement a directory in each node, which tracks the state, in other nodes, of each cache block in the memory assigned to that node. Additionally, however, the state of the cache block in the other nodes must also be tracked in those other nodes. For example, if cache block is in one of the other nodes in a modified state, that other node needs to return the cache block when the cache block is evicted from that other node.